/**
 * Author:yuiop
 * Date:2022/3/29 15:21
 */
package com.devops.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.devops.admin.model.DOSMenu;
import com.devops.admin.po.DOSMenuPo;
import com.devops.admin.po.DOSRoleMenuRelationPo;
import com.devops.admin.vo.DOSMenuVo;
import com.devops.common.utils.Message;
import io.swagger.models.auth.In;

import java.util.List;
import java.util.Map;

public interface DOSMenuService extends IService<DOSMenu> {
    List<DOSMenuPo> getMenus();
    Map<String,Object> dealAllMenus();
    /**
     * @Author heyabo
     * @Description 获取角色绑定和未绑定的菜单
     * @Date 10:13 2022/8/30
     * @Param [roleId]
     * @return java.util.List<com.devops.admin.po.DOSRoleMenuRelationPo>
     **/
    List<DOSRoleMenuRelationPo> getBindMenus(Integer roleId,Integer isDel);

    /**
     * @Author heyabo
     * @Description 查询树形菜单结构
     * @Date 14:03 2022/8/30
     * @Param [id]
     * @return java.util.List<com.devops.admin.model.DOSMenu>
     **/
    List<DOSMenu> getTreeMenus(List<Integer> menuIds);

    /**
     * @Author heyabo
     * @Description 查询当前节点和其父节点
     * @Date '14:43' 2022/8/30
     * @Param [menuIds]
     * @return java.util.List<com.devops.admin.model.DOSMenu>
     **/
    List<DOSMenu> getPreTreeMenus(List<Integer> menuIds);

    /**
     * @Author heyabo
     * @Description 获取未添加的菜单
     * @Date 15:24 2022/8/30
     * @Param []
     * @return java.util.List<com.devops.admin.model.DOSMenu>
     **/
    List<DOSMenu> getNoAddMenus();

    /**
     * @Author heyabo
     * @Description 保存菜单
     * @Date 15:50 2022/8/30
     * @Param [menuVo]
     * @return com.devops.common.utils.Message
     **/
    Message saveMenu(DOSMenuVo menuVo);

    /**
     * @Author heyabo
     * @Description 更新菜单信息
     * @Date 17:01 2022/8/30
     * @Param [menuVo]
     * @return com.devops.common.utils.Message
     **/
    Message updateMenu(List<DOSMenuVo> menuVos);

    /**
     * @Author heyabo
     * @Description 批量删除菜单
     * @Date 11:40 2022/9/2
     * @Param [menuIds]
     * @return com.devops.common.utils.Message
     **/
    Message deleteMenu(Integer menuId);

    Message updateSingleMenu(DOSMenuVo menuVo);
}
